In [1]:
%cat fourier_transform.m


image = imread('../sample.tif', 'Index', 2);
fourier = fftshift(fft2(image));
rotated_fourier = rot90(fourier);
F = log(abs(fourier));
rF = log(abs(rotated_fourier));
inverse_image = ifft2(ifftshift(rotated_fourier));

figure();
imshow(image);
title('Original');
figure();
imshow(F, [min(F(:)), max(F(:))]);
title('FT');
figure();
imshow(F, [min(F(:)), max(F(:))]);
title('Rotated FT');
figure();
imshow(uint8(inverse_image));
title('Rotated with FT');
figure();
imshow(rot90(image));
title('Rotated original');

isequal(uint8(inverse_image), rot90(image))

In [2]:
%cat fourier_test.m


f = zeros(301,301);
f(130:170, 1:301) = 1;
f(100:200, 130:170) = 1;
figure();
imshow(f,'InitialMagnification','fit');

F = fft2(f);
F = fftshift(F);
rF = rot90(F);
rrF = rot90(rF,3);
F2 = log(abs(F));
F3 = log(abs(rot90(F)));
figure();
imshow(F3, [-1,5], 'InitialMagnification', 'fit');
colormap(jet); 
colorbar;
figure();
imshow(F2,[-1 5],'InitialMagnification','fit');
colormap(jet); 
colorbar;

f = ifft2(ifftshift(rF));
figure();
imshow(f, 'InitialMagnification', 'fit');

Circular mask

[x y] = meshgrid(1:80); C = sqrt((x-40).^2+(y-40).^2)<=20; imshow(C)


In [9]:
%pylab inline
x,y = meshgrid(range(80), range(80))
C = sqrt((x-40)**2+(y-40)**2) <= 20
imshow(C)


Populating the interactive namespace from numpy and matplotlib
Out[9]:
<matplotlib.image.AxesImage at 0x103e55590>